protocols for typical developers